#include "brain.h"
#include "def.h"
#include "card.h"
#include <QList>
#include <QtCore>

Brain::Brain()
{
//	cold = new QList<Card*>;
	card_count = 0;
}
 
void Brain::push(Card* card)
{

//	qDebug() <<"!OK:\t";
	cold[card_count++] = card;
//	qDebug() <<"!OK:\t";
	
}

// void Brain::setCold(QList<Card*>* cold)
// {
// 	Brain::cold=cold;
// }
//Проверка карты на козырь
bool	Brain::trump_it(Card* card, int trump)
{
	//козыть по масти либо шестерка крестей либо картинка
//	if ((card->suit==trump) || ((card->face_num>=JACK_BUBI) && (card->face_num<=QUEEN_CROSSES)) || (card->face_num==SIX_CROSSES))
	if ((card->suit==trump) || ((card->face_num>=JACK_BUBI) && (card->face_num<=SIX_CROSSES)))
	{
		return true;
	}
	else
	{
		return false;
	}
}
//Проверка на масть(функция пока неправильная, можно использовать только после проверки на козырь)
bool	Brain::in_suit(Card* card, int suit)
{
		//масть должна совпадать и масть не должна быть картинкой или шестеркой крестей
//	if ((card->suit==suit) && (((card->face_num>=SIX_BUBI) && (card->face_num<=TEN_CROSSES)) || ((card->face_num>=ACE_BUBI) && (card->face_num<=ACE_CROSSES))) && (card->face_num!=SIX_CROSSES))
	if ((card->suit==suit) && ((card->face_num>=SIX_BUBI) && (card->face_num<=ACE_CROSSES)))
	{
		return true;
	}
	else
	{
		return false;
	}
}
//Функция искуственного интелекта игры в козла
Card*	Brain::brain(/*QList<Card*>* cold,*/Card* table[4],int trump,int)
{
	Card* buff;
//	card_count--;
	//Первый ход был по козырю ?
	if (trump_it(table[0],trump))
	{
			//если по козырю, тогда перебираем все карты и смотрим, есть ли в колоде козырь
		for (int i = 0; i<card_count; i++)
		{
				//козырь нашелся?
			if (trump_it(cold[i],trump))
			{
					//если да,ходим и ломаем цикл
				buff = cold[i];
				del_item(i);
				buff->setShirt();
				return buff;
			}
		}
		//если козырь так и не нашли ходим любой(наример последней)
		buff = cold[card_count-1];
		del_item(card_count-1);
		buff->setShirt();
		return buff;
	}
	else
	{
		//усли не по козырю ходим в масть, если можно, если нет то ходим любой(наример первой в колоде)
		for (int i = 0; i<card_count; i++)
		{
				//масть нашлась?
			if (in_suit(cold[i],table[0]->suit))
			{
					//если да,ходим и ломаем цикл
				buff = cold[i];
				del_item(i);
				buff->setShirt();
				return buff;
			}
		}
		//если масть так и не нашли ходим любой(наример последней)
		buff = cold[card_count-1];
		del_item(card_count-1);
		buff->setShirt();
		return buff;
	}
}

void Brain::del_item(int item)
{
//	Card* buff;
	for (int i = item ; i<(card_count-1) ;i++)
	{
//		buff = cold[i];
		cold[i] = cold[i+1];
		
	}
	card_count--;
}

bool Brain::who_broke(Card* [4])
{
	return false;
}

void Brain::del_cold()
{
	card_count = 0;
}

int Brain::jack_crosses_test()
{
	for(int i=0;i<card_count;i++)
	{
		if (cold[i]->face_num == JACK_CROSSES)
		{
			return 0;
		}
	}
	return -1;
}
